using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Entidades;
using Negocio.Controladora; 

namespace VtasMkt.Marketing.ServiciosMkt
{
    public partial class frmServicio : Form
    {

        #region Variables y constantes

        // DataTable que se empleara para la vista previa de la impresion
        DataTable dtImp = new DataTable();

        #endregion

        public frmServicio()
        {
            InitializeComponent();
        }

        private void frmServicio_Load(object sender, EventArgs e)
        {
            MostrarInfoGrilla();
            CargaCombo();
        }

        #region Metodos privados

        // Muestra la informacion en la grilla del formulario
        private void MostrarInfoGrilla()
        {
            try
            {
                // Obtiene y prepara el filtro
                String pCodigoServicio, pDescripcion, pEstado, pTipoServicio;
                pCodigoServicio = this.txtCodigoServicio.Text;
                pDescripcion = this.txtDescripcion.Text;
                pEstado = Convert.ToString(this.cboEstado.SelectedValue);
                pTipoServicio = Convert.ToString(this.cboTipoServicio.SelectedValue);
                                
                // Obtiene la informacion y la carga a la grilla
                ActualizarServicio oServicioCon = new ActualizarServicio();
                DataTable dtInfo = oServicioCon.ListaServicios(pCodigoServicio, pDescripcion, pEstado, pTipoServicio);
                dgvMain.DataSource = dtInfo;

                // Deja en memoria el DataTable para la impresion
                dtImp = dtInfo;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text);
            }
        }

        private void CargaCombo()
        {
            // Carga el combobox de Estado del Servicio
            ActualizarServicio oServicioCon = new ActualizarServicio();
            DataTable dtInfo0 = oServicioCon.ListaEstado();
            dtInfo0.Rows.InsertAt(dtInfo0.NewRow(), 0);
            this.cboEstado.DataSource = dtInfo0;
            this.cboEstado.DisplayMember = "Descripcion";
            this.cboEstado.ValueMember = "CodigoEstado";

            // Carga el combobox Tipo Servicio
            ActualizarServicio oServicioCon1 = new ActualizarServicio();
            DataTable dtInfo1 = oServicioCon1.ListaTipoServicio();
            dtInfo1.Rows.InsertAt(dtInfo1.NewRow(), 0);
            this.cboTipoServicio.DataSource = dtInfo1;
            this.cboTipoServicio.DisplayMember = "Descripcion";
            this.cboTipoServicio.ValueMember = "CodigoTipoServicioExtra";
       }

        #endregion

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            Entidades.Servicio oServicio = new Entidades.Servicio();
            VtasMkt.Marketing.ServiciosMkt.frmActualizarServicio oServicioAct = new VtasMkt.Marketing.ServiciosMkt.frmActualizarServicio(oServicio);
            oServicioAct.Tag = AccionMnt.NuevoRegistro;
            oServicioAct.ShowDialog();
            MostrarInfoGrilla();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (dgvMain.SelectedRows.Count > 0)
            {
                Entidades.Servicio oServicio = new Entidades.Servicio();
                oServicio.CodigoServicio = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                VtasMkt.Marketing.ServiciosMkt.frmActualizarServicio oServicioAct = new VtasMkt.Marketing.ServiciosMkt.frmActualizarServicio(oServicio);
                oServicioAct.Tag = AccionMnt.EditarRegistro;
                oServicioAct.ShowDialog();
                MostrarInfoGrilla(); 
            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }


        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            

            if (dgvMain.SelectedRows.Count > 0)
            {
                Entidades.Servicio oServicio = new Entidades.Servicio();
                oServicio.CodigoServicio = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                VtasMkt.Marketing.ServiciosMkt.frmActualizarServicio oServicioAct = new VtasMkt.Marketing.ServiciosMkt.frmActualizarServicio(oServicio);
                oServicioAct.Tag = AccionMnt.EliminarRegistro;
                oServicioAct.ShowDialog();
                MostrarInfoGrilla();
            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            ActualizarServicio oServicioCon2 = new ActualizarServicio();
            oServicioCon2.ListaServicios(this.txtCodigoServicio.Text, this.txtDescripcion.Text, Convert.ToString(this.cboEstado.SelectedValue), Convert.ToString(this.cboTipoServicio.SelectedValue));
            MostrarInfoGrilla();
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close(); 
        }

        private void txtCodigoServicio_KeyPress(object sender, KeyPressEventArgs e)
        {
            VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();
            short KeyAscii = (short)(rutGen.Asc(e.KeyChar));
            if (rutGen.SoloNumeros(KeyAscii) == true)
            {
                e.Handled = true;
            }
        }

        private void btnImprimir_Click(object sender, EventArgs e)
        {
            // Prepara el DataSet para la vista previa
            VtasMkt.Marketing.Servicio.dsServicio dsServicio = new VtasMkt.Marketing.Servicio.dsServicio();
            dsServicio.dtServicio.Merge(dtImp);

            // Muestra el formulario de vista previa con el reporte
            VtasMkt.General.frmVerReporte verRptWin = new VtasMkt.General.frmVerReporte(dsServicio);
            verRptWin.MdiParent = frmMain.ActiveForm;
            verRptWin.Show();
        }


    }
}